home *** CD-ROM | disk | FTP | other *** search
- #ifndef FEELIN_H
- #define FEELIN_H 1
-
- /*
- ** $VER: feelin.h 3.0 (26-06-2002)
- **
- ** feelin.library definitions
- **
- ** © 2001-02 Laviale Olivier (Lotan9@aol.com)
- */
-
- /// Module information
- #include <exec/libraries.h>
- #include <exec/semaphores.h>
-
- #include <graphics/rastport.h>
- #include <graphics/text.h>
- #include <intuition/intuition.h>
- #include <utility/tagitem.h>
-
- #define TRUE -1
- #define FV_VERSION 4L
-
- #define FEELIN_DEV
-
- /*
- All constants follow these rules :
-
- FM_<method> - General method, understood by all classes
- FM_<class>_<method> - Class method
- FA_<attrib> - General attribute, known by many classes.
- FA_<class>_<attrib> - Specific class attribute
- FV_<class>_<value> - Special attribute value
- FS_<name> - Shortcut to structure name
- FP_<class>_<value> - Preference value, resolved on FM_Setup
-
- FA_<attrib> definitions are followed by a comment [ISG] :
- I : it's possible to specify this attribute at object creation time.
- S : it's possible to change this attribute with F_Set().
- G : it's possible to get this attribute with F_Get().
-
- FR_<class> = Registered class id (unsigned 24 bits)
- FR_<class>_Mthd = First Method ID of <class>
- FR_<class>_Attr = First Attribute ID of <class>
- FR_<class>_Pref = First Preference ID of <class>
-
- Ranges:
-
- $F0000000 - $FFFFFFFF is reserved for Feelin methods.
- $8F000000 - $8FFFFFFF is reserved for Feelin attributes.
- $50000000 - $5FFFFFFF is reserver for Preference items.
-
- $C0000000 - $CFFFFFFF is reserved for custom classes methods.
- $8C000000 - $8CFFFFFF is reserved for custom classes attributes.
- */
-
- #define MTHD_BASE 0xF0000000
- #define ATTR_BASE 0x8F000000
- #define PREF_BASE 0x50000000
-
- #define FCCM_BASE 0xC0000000
- #define FCCA_BASE 0x8C000000
- //+
-
- /*** Misc ******************************************************************/
-
- /// System Structures
- //#define FS_Class FeelinClass
-
- struct FeelinNode {
- struct FeelinNode *Next;
- struct FeelinNode *Prev;
- };
-
- struct FeelinList {
- struct FeelinNode *Head;
- struct FeelinNode *Tail;
- };
-
- struct FeelinListSemaphored {
- struct FeelinNode *Head;
- struct FeelinNode *Tail;
- /* end of FeelinList header */
- struct SignalSemaphore Semaphore;
- };
-
- struct FeelinNodeData {
- struct FeelinNode *Next;
- struct FeelinNode *Prev;
- /* end of FeelinNode header */
- APTR Data;
- };
-
- struct FeelinClass {
- struct FeelinNode *Next;
- struct FeelinNode *Prev;
- /* end of FeelinNode header */
- STRPTR ID;
- UWORD OffSet;
- UWORD Size;
- struct FeelinClass *Super;
-
- APTR UserData;
- APTR (*Dispatcher)();
- #ifdef FEELIN_DEV
- APTR (*Setup)();
- APTR (*Cleanup)();
- ULONG OpenCount;
- struct Library *Libbase;
- struct FeelinPool *ObjectsPool;
- #endif
- };
-
- struct FeelinBase
- {
- struct Library Libnode;
- UBYTE fb_Flags;
- UBYTE fb_Reserved;
- APTR fb_SegList;
-
- struct FeelinServer *SystemServer;
-
- struct Library *Exec;
- struct Library *Dos;
- struct Library *Graphics;
- struct Library *Intuition;
- struct Library *Utility;
- struct Library *Layers;
-
- struct FeelinPool *DefaultPool;
- struct FeelinPool *ClassesPool;
-
- struct FeelinList Pools;
- struct FeelinList Classes;
- struct FeelinListSemaphored Servers;
-
- struct SignalSemaphore RenderSemaphore;
- APTR Console;
- APTR PutChar;
- };
-
- #ifdef FEELIN_DEV
- struct FeelinMemChunk
- {
- struct FeelinMemChunk *Next;
- ULONG Size; /* Complete size (Struct + Alloc) */
- /* Memory area follows */
- };
-
- struct FeelinPuddle
- {
- struct FeelinNode *Next;
- struct FeelinNode *Prev;
- /* end of FeelinNode header */
- struct FeelinPool *Pool;
- ULONG Lower;
- ULONG Upper;
- struct FeelinMemChunk *First;
- ULONG Size; /* Real size of allocation */
- ULONG Free; /* Memory area follows */
- };
-
- struct FeelinPool
- {
- struct FeelinNode *Next;
- struct FeelinNode *Prev;
- /* end of FeelinNode header */
- struct SignalSemaphore Semaphore;
-
- ULONG Flags;
- ULONG PuddleSize;
- ULONG ThreshSize;
- struct FeelinList Puddles;
- };
- #endif
- //+
- /// Macros:
- /// Macros / Quick object's structure handling
- #define INST_DATA(cl,o) ((void *) ( ((UBYTE *)o) + cl->OffSet))
-
- #define _asarea(o) ((struct FeelinArea *)(o))
- #define _box(o) (_asarea(o)->Box)
- #define _x(o) _box(o).x
- #define _y(o) _box(o).y
- #define _w(o) _box(o).w
- #define _h(o) _box(o).h
- #define _x2(o) (_x(o) + _w(o) - 1)
- #define _y2(o) (_y(o) + _h(o) - 1)
- #define _inner(o) (_asarea(o)->Inner)
- #define _bl(o) _inner(o).l
- #define _bt(o) _inner(o).t
- #define _br(o) _inner(o).r
- #define _bb(o) _inner(o).b
- #define _mx(o) (_x(o) + _bl(o))
- #define _my(o) (_y(o) + _bt(o))
- #define _mw(o) (_w(o) - _bl(o) - _br(o))
- #define _mh(o) (_h(o) - _bt(o) - _bb(o))
- #define _mx2(o) (_x2(o) - _br(o))
- #define _my2(o) (_y2(o) - _bb(o))
- #define _minw(o) (_asarea(o)->MinMax.MinW)
- #define _minh(o) (_asarea(o)->MinMax.MinH)
- #define _maxw(o) (_asarea(o)->MinMax.MaxW)
- #define _maxh(o) (_asarea(o)->MinMax.MaxH)
- #define _weight(o) (_asarea(o)->Weight)
- #define _flags(o) (_asarea(o)->Flags)
- #define _font(o) (_asarea(o)->Font)
- #define _handler(o) (_asarea(o)->Handler)
- #define _pens(o) (_asarea(o)->Pens)
- #define _pen(o,p) (_asarea(o)->Pens[p])
-
- #define _render(o) (_asarea(o)->Render)
- #define _context(o) (_render(o)->psContext)
- #define _winobj(o) (_render(o)->paWindowObject)
- #define _client(o) (_render(o)->paClientObject)
- #define _win(o) (_render(o)->psWindow)
- #define _rp(o) (_render(o)->psRPort)
- #define _scr(o) (_context(o)->psScreen)
- #define _fixw(o) (_minw(o) == _maxw(o))
- #define _fixh(o) (_minh(o) == _maxh(o))
- //+
- /// Macros / Drawing
- #define _FPen(o,fp) (SetAPen(rp,_pen(o,fp)))
- #define _APen(p) (SetAPen(rp,p))
- #define _BPen(p) (SetBPen(rp,p))
- #define _DrMd(m) (SetDrMd(rp,m))
- #define _Plot(x1,y1) (WritePixel(rp,x1,y1))
- #define _Move(x,y) (Move(rp,x,y))
- #define _Draw(x,y) (Draw(rp,x,y))
- #define _Boxf(x1,y1,x2,y2) (RectFill(rp,x1,y1,x2,y2))
- #define _Text(s,c) (Text(rp,s,c))
- //+
- /// Macros / Object Generation
- enum {
- FV_MakeObj_Label = 1, // label:PTR TO CHAR, flags:LONG
- FV_MakeObj_Button, // label:PTR TO CHAR
- FV_MakeObj_Bar, // Horiz:BOOL
- FV_MakeObj_BarTitle, // label:PTR TO CHAR
- FV_MakeObj_Gauge, // Horiz:BOOl,LONG Min, LONG Max, LONG Value
- FV_MakeObj_Slider, // Horiz:BOOl,LONG Min, LONG Max, LONG Value
- FV_MakeObj_Prop, // Horiz:BOOl,LONG entries, LONG visible, LONG first
- FV_MakeObj_String // label:PTR TO CHAR,maxlen:LONG
- };
-
- #define SimpleButton(x) F_MakeObj(FV_MakeObj_Button,x)
- #define Bar F_MakeObjA(FV_MakeObj_Bar,NULL)
- #define BarTitle(x) F_MakeObj(FV_MakeObj_BarTitle,x)
- #define Gauge(h,mi,ma,v) F_MakeObj(FV_MakeObj_Gauge,h,mi,ma,v)
- #define Slider(h,mi,ma,v) F_MakeObj(FV_MakeObj_Slider,h,mi,ma,v)
- #define Prop(h,e,v,f) F_MakeObj(FV_MakeObj_Prop,h,e,v,f)
- #define String(s,l) F_MakeObj(FV_MakeObj_String,s,l)
-
- #define Child FA_Child
- #define End TAG_DONE)
- //+
- ///Macros / C
- #ifdef _DCC
- #define REG(x) __ ## x
- #define ASM
- #define SAVEDS __geta4
- #else
- #define REG(x) register __ ## x
- #define ASM __asm
- #define SAVEDS __saveds
- #endif
-
- #define REG_D0 REG(d0)
- #define REG_D1 REG(d1)
- #define REG_D2 REG(d2)
- #define REG_D3 REG(d3)
- #define REG_D4 REG(d4)
- #define REG_D5 REG(d5)
- #define REG_D6 REG(d6)
- #define REG_D7 REG(d7)
-
- #define REG_A0 REG(a0)
- #define REG_A1 REG(a1)
- #define REG_A2 REG(a2)
- #define REG_A3 REG(a3)
- #define REG_A4 REG(a4)
- #define REG_A5 REG(a5)
- #define REG_A6 REG(a6)
- #define REG_A7 REG(a7)
-
- #define MAKE_ID(a,b,c,d) \
- ((ULONG) (a)<<24 | (ULONG) (b)<<16 | (ULONG) (c)<<8 | (ULONG) (d))
- //+
- //+
- /// Keyboards events coming along FM_HandleEvent
- #define FV_Key_Release -2 // upstroke return - Not a real key, faked when FK_PRESS is released
- #define FV_Key_None -1
- #define FV_Key_Press 0
- #define FV_Key_Toggle 1
- #define FV_Key_Top 2 // control up
- #define FV_Key_Bottom 3 // control down
- #define FV_Key_Up 4 // up
- #define FV_Key_Down 5 // down
- #define FV_Key_Left 6 // left
- #define FV_Key_Right 7 // right
- #define FV_Key_Word_Prev 8 // shift left
- #define FV_Key_Word_Next 9 // shift right
- #define FV_Key_Line_Start 10 // alt left
- #define FV_Key_Line_End 11 // alt right
- #define FV_Key_Object_Next 12 // tab
- #define FV_Key_Object_Prev 13 // shift tab
- #define FV_Key_Char_Back 14 // backspace
- #define FV_Key_Char_Del 15 // del
- #define FV_Key_Word_Back 16 // alt backspace
- #define FV_Key_Word_Del 17 // alt del
- #define FV_Key_Line_Back 18 // shift backspace
- #define FV_Key_Line_Del 19 // shift del
- #define FV_Key_Window_Close 20 // esc
- //+
-
- /*** Root Object for most objects ******************************************/
-
- /// Object 0x000000
- #define FC_Object "Object.fc"
-
- #define FR_Object 0x000000
- #define FR_Object_Mthd MTHD_BASE | FR_Object
- #define FR_Object_Attr ATTR_BASE | FR_Object
-
- #define FM_New 0xF0000000
- #define FM_Dispose 0xF0000001
- #define FM_Set 0xF0000002
- #define FM_Get 0xF0000003
- #define FM_Notify 0xF0000004
- #define FM_UnNotify 0xF0000005
- #define FM_UnNotifyAttr 0xF0000006
- #define FM_MultiSet 0xF0000007
- #define FM_SetAsString 0xF0000008
- #define FM_WriteLong 0xF0000009
- #define FM_WriteString 0xF000000A
- #define FM_CallDispatcher 0xF000000B
-
- #define FA_ID 0x8F000000
- #define FA_UserData 0x8F000001
- #define FA_NoNotify 0x8F000002
- #define FA_Parent 0x8F000003
- #define FA_Class 0x8F000004
- #define FA_Revision 0x8F000005
- #define FA_Version 0x8F000006
- #define FA_ClassID 0x8F000007
- #define FA_SuperID 0x8F000008
- #define FA_DataSize 0x8F000009
- #define FA_Dispatcher 0x8F00000A
- #define FA_ClassInit 0x8F00000B
- #define FA_ClassExit 0x8F00000C
- #define FA_ClassData 0x8F00000D
- #define FA_ClassPool 0x8F00000E
-
- long enum {
- FV_Notify_None,
- FV_Notify_Self,
- FV_Notify_Parent,
- FV_Notify_Window,
- FV_Notify_Client,
- FV_Notify_Always = 0x49893131,
- FV_Notify_Toggle = 0x49893132
- };
-
- #define FV_Notify_Value FV_Notify_Always
-
- struct FeelinObject
- {
- struct FeelinNode *Next;
- struct FeelinNode *Prev;
- /* end of FeelinNode header */
- struct FeelinObject *Parent;
- ULONG ID;
- ULONG UserData;
- };
- //+
-
- /*** Servers ***************************************************************/
-
- ///Server 0x800000
- #define FC_Server "Server.fc"
-
- #define FR_Server 0x800000
- #define FR_Server_Mthd MTHD_BASE | FR_Server
- #define FR_Server_Attr ATTR_BASE | FR_Server
-
- long enum {
- FSA_Remove = FR_Server
- };
-
- #define FA_Server_Port 0x8F800000
-
- struct FeelinServer {
- struct Node ss_Link;
- WORD ss_NestCount;
- struct MinList ss_WaitQueue;
- struct SemaphoreRequest ss_MultipleLink;
- struct Task *ss_Owner;
- WORD ss_QueueCount;
- /* end of SignalSempahore header */
- UWORD nReserved;
- ULONG nOpenCount;
- struct MsgPort *psPort;
- struct FeelinNode sNode;
- };
-
- struct FeelinServerMessage {
- struct Node mn_Node;
- struct MsgPort *mn_ReplyPort;
- UWORD mn_Length;
- /* end of Message Header */
- UWORD Reserved;
- ULONG nAction;
- ULONG *pnArgs;
- ULONG nReturn;
- };
- //+
- ///SystemServer 0x800040
- #define FR_SystemServer 0x800040
- #define FR_SystemServer_Mthd MTHD_BASE | FR_SystemServer
- #define FR_SystemServer_Attr ATTR_BASE | FR_SystemServer
-
- #define FM_SystemServer_OpenLibrary 0xF0800040
- #define FM_SystemServer_CloseLibrary 0xF0800041
- #define FM_SystemServer_ObtainTags 0xF0800042
- #define FM_SystemServer_MakeObject 0xF0800043
- #define FM_SystemServer_OpenFont 0xF0800044
- #define FM_SystemServer_CloseFont 0xF0800045
- #define FM_SystemServer_ClipboardLoad 0xF0800046
- #define FM_SystemServer_ClipboardSave 0xF0800047
-
- #define FA_SystemServer 0x8F800040
- //+
- ///WindowServer 0x800080
- #define FR_WindowServer 0x800080
- #define FR_WindowServer_Mthd MTHD_BASE | FR_WindowServer
- #define FR_WindowServer_Attr ATTR_BASE | FR_WindowServer
- #define FR_WindowServer_Actn FR_WindowServer
-
- #define FA_SharedIDCMPPort 0x8F800080
- //+
- ///DisplayServer 0x8000C0
- #define FR_DisplayServer 0x8000C0
- #define FR_DisplayServer_Mthd MTHD_BASE | FR_DisplayServer
- #define FR_DisplayServer_Attr ATTR_BASE | FR_DisplayServer
-
- #define FM_DisplayServer_FindDisplay 0xF08000C0
- #define FM_DisplayServer_OpenDisplay 0xF08000C1
- #define FM_DisplayServer_CloseDisplay 0xF08000C2
- //+
-
- /*** Tools *****************************************************************/
-
- /// Tool 0x700000
- #define FC_Tool "Tool.fc"
-
- #define FR_Tool 0x700000
- #define FR_Tool_Mthd MTHD_BASE | FR_Tool
- #define FR_Tool_Attr ATTR_BASE | FR_Tool
-
- #define FA_Tool_Owner 0x8F700000
-
- struct FeelinTool {
- struct FeelinObject *Owner;
- };
- //+
- /// Family 0x700040
- #define FC_Family "Family.fc"
- #define FamilyObject F_NewObj(FC_Family
-
- #define FR_Family 0x700040
- #define FR_Family_Mthd MTHD_BASE | FR_Family
- #define FR_Family_Attr ATTR_BASE | FR_Family
-
- #define FM_Family_AddTail 0xF0700040
- #define FM_Family_Remove 0xF0700041
- #define FM_Family_AddHead 0xF0700042
- #define FM_Family_Insert 0xF0700043
- #define FM_Family_Sort 0xF0700044
- #define FM_Family_Transfer 0xF0700045
- #define FM_AddMember 0xF0700040
- #define FM_RemMember 0xF0700041
-
- #define FA_Child 0x8F700040
- #define FA_Family 0x8F700041
- #define FA_Family_List 0x8F700042
- #define FA_Family_Head 0x8F700043
- #define FA_Family_Tail 0x8F700044
-
- struct FeelinFamily { /*OF FeelinTool*/
- struct FeelinObject *Owner;
- /* end of FeelinTool header */
- struct FeelinObject *Head;
- struct FeelinObject *Tail;
- };
- //+
- /// Numeric 0x700080
- #define FC_Numeric "Numeric.fc"
- #define NumericObject F_NewObj(FC_Numeric
-
- #define FR_Numeric 0x700080
- #define FR_Numeric_Mthd MTHD_BASE | FR_Numeric
- #define FR_Numeric_Attr ATTR_BASE | FR_Numeric
-
- #define FM_Numeric_Increase 0xF0700080
- #define FM_Numeric_Decrease 0xF0700081
- #define FM_Numeric_Stringify 0xF0700082
- #define FM_Numeric_Reset 0xF0700083
-
- #define FA_Numeric_Default 0x8F700080
- #define FA_Numeric_Value 0x8F700081
- #define FA_Numeric_Min 0x8F700082
- #define FA_Numeric_Max 0x8F700083
- #define FA_Numeric_Step 0x8F700084
- #define FA_Numeric_Format 0x8F700085
- #define FA_Numeric_Formula 0x8F700086
- #define FA_Numeric_Multiply 0x8F700087
- #define FA_Numeric_Divide 0x8F700088
-
- #ifdef FEELIN_DEV
- struct FeelinNumeric {/*OF feelinTool*/
- struct FeelinObject *Owner;
- /* end of FeelinTool header */
- LONG Default;
- LONG Value;
- LONG Min;
- LONG Max;
- LONG Step;
- STRPTR String;
- STRPTR Format;
- };
- #endif
- //+
- /// FrameDisplay 0x7000C0
- #define FC_FrameDisplay "FrameDisplay.fc"
- #define FR_FrameDisplay 0x7000C0
- #define FR_FrameDisplay_Mthd MTHD_BASE | FR_FrameDisplay
- #define FR_FrameDisplay_Attr ATTR_BASE | FR_FrameDisplay
- #define FR_FrameDisplay_Pref PREF_BASE | FR_FrameDisplay
-
- #define FrameDisplayObject F_NewObj(FC_FrameDisplay
-
- /* Methods */
-
- #define FM_FrameDisplay_Draw 0xF07000C0
-
- /* Attributes */
-
- #define FA_Frame 0x8F7000C0
- #define FA_AltFrame 0x8F7000C1
- #define FA_Back 0x8F7000C2
- #define FA_AltBack 0x8F7000C3
- #define FA_Frame_Font 0x8F7000C4
- #define FA_Frame_Title 0x8F7000C5
- #define FA_Frame_PreParse 0x8F7000C6
- #define FA_Frame_Position 0x8F7000C7
-
- /* Preference Items */
-
- #define FP_Frame_Font 0x507000C0
- #define FP_Frame_PreParse 0x507000C1
- #define FP_Frame_Position 0x507000C2
- #define FP_Frame_Window 0x507000C3
- #define FP_Frame_Group 0x507000C4
- #define FP_Frame_Button 0x507000C5
- #define FP_Frame_Cycle 0x507000C6
- #define FP_Frame_Slider 0x507000C7
- #define FP_Frame_SliderKnob 0x507000C8
- #define FP_Frame_Scroller 0x507000C9
- #define FP_Frame_Listview 0x507000CA
- #define FP_Frame_ListXxx 0x507000CB
- #define FP_Frame_String 0x507000CC
- #define FP_Frame_Text 0x507000CD
- #define FP_Frame_Gauge 0x507000CE
- #define FP_Frame_Prop 0x507000CF
-
- /* Special values */
-
- #define FV_Frame_None NULL
- #define FV_Frame_LastBuiltin 255L
- #define FF_Frame_InheritedBackground (1L << 00)
- #define FF_Frame_TitleDown (1L << 01)
- #define FF_Frame_Fill (1L << 00)
-
- enum { /* FA_Frame_Position */
- FV_Frame_UpLeft,
- FV_Frame_UpRight,
- FV_Frame_UpCenter,
- FV_Frame_DownLeft,
- FV_Frame_DownRight,
- FV_Frame_DownCenter
- };
-
- struct FeelinInner { UBYTE l,t,r,b; };
-
- #define FS_Inner FeelinInner
-
- struct FeelinFrameDisplay
- {
- struct FeelinObject *paOwner;
- /* end of FeelinTool header */
- APTR paBackground;
- struct FS_Inner psInners[2];
- UWORD nFlags;
- };
-
- struct FS_FrameDisplay_Draw { struct FeelinRect *Rect; struct FeelinRender *Render; ULONG Flags; };
-
- #ifdef FEELIN_DEV
- struct FeelinFrameSpec
- {
- UWORD id,aid; ULONG space,aspace;
- };
- #endif
-
- #define NoFrame FA_Frame,FV_Frame_None
- #define ButtonFrame FA_Frame,FP_Frame_Button
- #define TextFrame FA_Frame,FP_Frame_Text
- #define StringFrame FA_Frame,FP_Frame_String
- #define PropFrame FA_Frame,FP_Frame_Prop
- #define SliderFrame FA_Frame,FP_Frame_Slider
- #define GaugeFrame FA_Frame,FP_Frame_Gauge
- #define GroupFrame FA_Frame,FP_Frame_Group
- //+
-
- /*** GUI System ************************************************************/
-
- /// Client 0x004000
- #define FC_Client "Client.fc"
- #define ClientObject F_NewObj(FC_Client
-
- #define FR_Client 0x004000
- #define FR_Client_Mthd MTHD_BASE | FR_Client
- #define FR_Client_Attr ATTR_BASE | FR_Client
-
- #define FM_Client_Run 0xF0004000
- #define FM_Client_Event 0xF0004001
- #define FM_Client_WaitEvent 0xF0004002
- #define FM_Client_ReturnID 0xF0004003
- #define FM_Client_AddSignalHandler 0xF0004004
- #define FM_Client_RemSignalHandler 0xF0004005
- #define FM_Client_Resolve 0xF0004006
- #define FM_Client_OpenFont 0xF0004007
- #define FM_Client_Load 0xF0004008
- #define FM_Client_Save 0xF0004009
-
- #define FA_Client 0x8F004000
- #define FA_Client_Title 0x8F004001
- #define FA_Client_Version 0x8F004002
- #define FA_Client_Copyright 0x8F004003
- #define FA_Client_Author 0x8F004004
- #define FA_Client_Description 0x8F004005
- #define FA_Client_Base 0x8F004006
- #define FA_Client_Unique 0x8F004007
- #define FA_Client_Signal 0x8F004008
- #define FA_Client_UserSignals 0x8F004009
- #define FA_Client_WindowPort 0x8F00400A
- #define FA_Client_BrokerPort 0x8F00400B
- #define FA_Client_BrokerHook 0x8F00400C
- #define FA_Client_BrokerPri 0x8F00400D
- #define FA_Client_Broker 0x8F00400E
- #define FA_Client_GUISpace 0x8F00400F
- #define FA_Client_OBJSpace 0x8F004010
- #define FA_Client_Context 0x8F004011
-
- #define FV_Client_Quit -1L
-
- enum {
- FV_Client_ENV,
- FV_Client_ENVARC,
- FV_Client_BOTH
- };
-
- struct FeelinSignalHandler
- {
- struct FeelinSignalHandler *Next;
- struct FeelinSignalHandler *Prev;
- /* end of FeelinNode header */
- ULONG Flags;
- struct FeelinObject *Object;
- ULONG Method;
-
- ULONG Signals; /* Secs */
- ULONG Reserved; /* Micros */
- /*
- union
- {
- struct
- {
- ULONG Signals;
- ULONG Reserved;
- } sig;
-
- struct
- {
- ULONG Secs;
- ULONG Micros;
- } timer;
- }
- */
- };
-
- #define FF_SignalHandler_Timer (1L << 00)
-
- struct FS_Resolve { ULONG ID; ULONG *Storage; };
- struct FS_OpenFont { struct FeelinObject *Obj; ULONG Type; };
- //+
- /// Window 0x004040
- #define FC_Window "Window.fc"
- #define WindowObject F_NewObj(FC_Window
-
- #define FR_Window 0x004040
- #define FR_Window_Mthd MTHD_BASE | FR_Window
- #define FR_Window_Attr ATTR_BASE | FR_Window
- #define FR_Window_Pref PREF_BASE | FR_Window
-
- #define FM_Window_Event 0xF0004040
- #define FM_Window_ChainAdd 0xF0004041
- #define FM_Window_ChainRem 0xF0004042
- #define FM_Window_AddEventHandler 0xF0004043
- #define FM_Window_RemEventHandler 0xF0004044
- #define FM_Window_Layout 0xF0004045
- #define FM_Window_Draw 0xF0004046
- #define FM_Window_CreateDragDrop 0xF0004047
-
- #define FA_Window 0x8F004040
- #define FA_Window_Title 0x8F004041
- #define FA_Window_ScreenTitle 0x8F004042
- #define FA_Window_Open 0x8F004043
- #define FA_Window_CloseRequest 0x8F004044
- #define FA_Window_Active 0x8F004045
- #define FA_Window_ActiveObject 0x8F004046
- #define FA_Window_Backdrop 0x8F004047
- #define FA_Window_Borderless 0x8F004048
- #define FA_Window_CloseGadget 0x8F004049
- #define FA_Window_DepthGadget 0x8F00404A
- #define FA_Window_SizeGadget 0x8F00404B
- #define FA_Window_DragBar 0x8F00404C
- #define FA_Window_MouseObject 0x8F00404D
- #define FA_Window_Renderer 0x8F00404E
- #define FA_Window_HandlePopHelp 0x8F00404F
-
- #define FP_Font_Window 0x50004040
- #define FP_Window_Renderer 0x50004041
- #define FP_Window_PopHelpDelay 0x50004042
-
- long enum {
- FV_Window_ActiveObject_Prev = -2,
- FV_Window_ActiveObject_Next,
- FV_Window_ActiveObject_None
- };
-
- /*** Window / FS_Render ****************************************************/
-
- #define FeelinRender FS_Render // backward compatibility
-
- struct FeelinRender {
- struct FeelinServer *psSystemServer;
- struct FeelinObject *paClientObject; // Valid between FM_Setup / FM_Cleanup
- struct FeelinObject *paWindowObject; // Valid between FM_Setup / FM_Cleanup
- struct FeelinDisplayContext *psContext; // Valid between FM_Setup / FM_Cleanup
- struct Window *psWindow; // Valid between FM_Show / FM_Hide
- struct RastPort *psRPort; // Valid between FM_Show / FM_Hide
- ULONG *pnPens; // Set at will
- ULONG nFlags;
- };
-
- #define FF_Render_Refreshing (1L << 00)
- #define FF_Render_Forbid (1L << 01)
-
- /*** Window / FS_EventHandler **********************************************/
-
- #define FeelinEventHandler FS_EventHandler // backward compatibility
-
- struct FS_EventHandler {
- struct FS_EventHandler *Next;
- struct FS_EventHandler *Prev;
- /* end of FeelinNode header */
- UWORD Flags;
- BYTE Priority; // Linked by priority
- UBYTE Reserved;
- ULONG Events; // One or more IDCMP flags this handler should react on
- APTR Object; // Object which should receive FM_HandleEvent
- struct FeelinClass *Class; // If class <> NIL then class will be called instead of object.class
- };
-
- #define FF_HandleEvent_Eat (1L << 00)
- //+
- /*** GUI Classes ***********************************************************/
-
- /// Area 0x000040
- #define FC_Area "Area.fc"
- #define AreaObject F_NewObj(FC_Area
- #define InputImmediate FA_InputMode,FV_InputMode_Immediate
- #define InputRelease FA_InputMode,FV_InputMode_Release
- #define InputToggle FA_InputMode,FV_InputMode_Toggle
- #define DontChain FA_ChainToCycle,FALSE
- #define HorizLayout FA_Horizontal,TRUE
-
- #define FR_Area 0x000040
- #define FR_Area_Mthd MTHD_BASE | FR_Area
- #define FR_Area_Attr ATTR_BASE | FR_Area
- #define FR_Area_Pref PREF_BASE | FR_Area
-
- #define FM_Setup 0xF0000040
- #define FM_Cleanup 0xF0000041
- #define FM_Show 0xF0000042
- #define FM_Hide 0xF0000043
- #define FM_AskMinMax 0xF0000044
- #define FM_Layout 0xF0000045
- #define FM_Draw 0xF0000046
- #define FM_DrawBackground 0xF0000047
- #define FM_HandleEvent 0xF0000048
- #define FM_Active 0xF0000049
- #define FM_Inactive 0xF000004A
- #define FM_ModifyHandler 0xF000004B
- #define FM_BuildContextMenu 0xF000004C
- #define FM_BuildContextHelp 0xF000004D
- #define FM_DragQuery 0xF000004E
- #define FM_DragBegin 0xF000004F
- #define FM_DragFinish 0xF0000050
- #define FM_DragReport 0xF0000051
- #define FM_DragDrop 0xF0000052
-
- #define FA_Area 0x8F000040
- #define FA_Left 0x8F000041
- #define FA_Top 0x8F000042
- #define FA_Right 0x8F000043
- #define FA_Bottom 0x8F000044
- #define FA_Width 0x8F000045
- #define FA_Height 0x8F000046
- #define FA_Inner 0x8F000047
- #define FA_Inner_Left 0x8F000048
- #define FA_Inner_Top 0x8F000049
- #define FA_Inner_Right 0x8F00004A
- #define FA_Inner_Bottom 0x8F00004B
- #define FA_Inner_Width 0x8F00004C
- #define FA_Inner_Height 0x8F00004D
- #define FA_MinWidth 0x8F00004E
- #define FA_MinHeight 0x8F00004F
- #define FA_MaxWidth 0x8F000050
- #define FA_MaxHeight 0x8F000051
- #define FA_FixWidth 0x8F000052
- #define FA_FixHeight 0x8F000053
- #define FA_FixWidthTxt 0x8F000054
- #define FA_FixHeightTxt 0x8F000055
- #define FA_Fixed 0x8F000056
- #define FA_FixedWidth 0x8F000057
- #define FA_FixedHeight 0x8F000058
- #define FA_Active 0x8F000059
- #define FA_Selected 0x8F00005A
- #define FA_Pressed 0x8F00005B
- #define FA_Hidden 0x8F00005C
- #define FA_Disabled 0x8F00005D
- #define FA_Draggable 0x8F00005E
- #define FA_Dropable 0x8F00005F
- #define FA_Timer 0x8F000060
- #define FA_Font 0x8F000061
- #define FA_FillArea 0x8F000062
- #define FA_Weight 0x8F000063
- #define FA_Horizontal 0x8F000064
- #define FA_InputMode 0x8F000065
- #define FA_ControlChar 0x8F000066
- #define FA_ChainToCycle 0x8F000067
- #define FA_WindowObject 0x8F000068
- #define FA_HiddenPage 0x8F000069
-
- long enum {
- FV_InputMode_None = 0,
- FV_InputMode_Immediate,
- FV_InputMode_Release,
- FV_InputMode_Toggle
- };
-
- long enum {
- FV_Font_Inherit = -1
- };
-
- #define FP_Font_Normal 0x50000040
- #define FP_Font_Tiny 0x50000041
- #define FP_Font_Big 0x50000042
- #define FP_Font_Fixed 0x50000043
- #define FP_Font_Button 0x50000044
-
- #define FF_Horizontal (1L << 00)
- #define FF_Area_Selected (1L << 01)
- #define FF_Area_Pressed (1L << 02)
- #define FF_Area_Hidden (1L << 03)
- #define FF_Area_Disabled (1L << 04)
- #define FF_Area_Draggable (1L << 05)
- #define FF_Area_Dropable (1L << 06)
- #define FF_Area_FixedWidth (1L << 07)
- #define FF_Area_FixedHeight (1L << 08)
- #define FF_Area_Fixed FF_Area_FixedWidth | FF_Area_FixedHeight
- #define FF_Area_Active (1L << 09)
- #define FF_Area_HiddenPage (1L << 10)
- #define FF_ChainToCycle (1L << 11)
- #define FF_FillArea (1L << 12)
-
- #define FF_Custom_1 (1L << 25)
- #define FF_Custom_2 (1L << 26)
- #define FF_Custom_3 (1L << 27)
- #define FF_Custom_4 (1L << 28)
- #define FF_Custom_5 (1L << 29)
- #define FF_Custom_6 (1L << 30)
- #define FF_Custom_7 (1L << 31)
- #define FF_Custom_8 (1L << 32)
-
- #define FF_Draw_Object (1L << 00)
- #define FF_Draw_Update (1L << 01)
- #define FF_Draw_Fill (1L << 02)
- #define FF_Draw_Custom_1 (1L << 25)
- #define FF_Draw_Custom_2 (1L << 26)
- #define FF_Draw_Custom_3 (1L << 27)
- #define FF_Draw_Custom_4 (1L << 28)
- #define FF_Draw_Custom_5 (1L << 29)
- #define FF_Draw_Custom_6 (1L << 30)
- #define FF_Draw_Custom_7 (1L << 31)
- #define FF_Draw_Custom_8 (1L << 32)
-
- #define FV_MAXMAX 10000L
-
- #define FeelinRect FS_Rect // Backward compatibility
- #define FS_Box FeelinBox
- #define FS_MinMax FeelinMinMax
-
- //struct FeelinRect { UWORD x1,y1,x2,y2; };
- struct FeelinBox { UWORD x,y,w,h; };
- struct FeelinMinMax { UWORD MinW,MinH,MaxW,MaxH; };
-
- struct FS_Rect {
- UWORD x1,y1,x2,y2;
- };
-
- /* Object */
-
- struct FeelinArea {
- struct FeelinObject ObjectNode;
- ULONG Flags;
- struct FeelinRender *Render;
-
- // struct FeelinRect Area;
- struct FS_Box Box;
- struct FS_Inner Inner;
- struct FeelinMinMax MinMax;
-
- ULONG *Pens;
- struct TextFont *Font;
- struct FeelinEventHandler *Handler;
- UWORD Weight;
- /* Private data below */
- };
-
- struct FS_Draw { ULONG Flags; };
- struct FS_DrawBackground { UWORD x1,y1,x2,y2; ULONG Flags; };
- struct FS_Setup { struct FeelinRender *Render; };
- struct FS_HandleEvent { struct IntuiMessage *Msg; ULONG Key; };
- struct FS_DragQuery { struct FeelinObject *Source; LONG MouseX, MouseY; };
- struct FS_BuildContextHelp { LONG MouseX, MouseY;STRPTR Help; };
- struct FS_BuildContextMenu { LONG MouseX, MouseY;struct FeelinObject *Menu; struct FeelinObject *ContextOwner; struct FeelinRender *Render; };
- //+
- ///Image 0x000080
- #define FC_Image "Image.fc"
- #define ImageObject F_NewObj(FC_Image
-
- #define FR_Image 0x000080
- #define FR_Image_Mthd MTHD_BASE | FR_Image
- #define FR_Image_Attr ATTR_BASE | FR_Image
-
- #define FA_Image 0x8F000080
- #define FA_AltImage 0x8F000081
- #define FA_Image_Width 0x8F000082
- #define FA_Image_Height 0x8F000083
- #define FA_Image_Precision 0x8F000084
- #define FA_Image_State 0x8F000085
-
- long enum {
- FV_Image_Normal,
- FV_Image_Selected,
- FV_Image_Enabled,
- FV_Image_Disabled
- };
- //+
- /// Text 0x0000C0
- #define FC_Text "Text.fc"
- #define TextObject F_NewObj(FC_Text
-
- #define FR_Text 0x0000C0
- #define FR_Text_Mthd MTHD_BASE | FR_Text
- #define FR_Text_Attr ATTR_BASE | FR_Text
-
- #define FA_Text 0x8F900080
- #define FA_Text_PreParse 0x8F900081
- #define FA_Text_AltPreParse 0x8F0000C0
- #define FA_Text_SetMin 0x8F0000C1
- #define FA_Text_HCenter 0x8F0000C2
- #define FA_Text_VCenter 0x8F0000C3
- #define FA_Text_Static 0x8F0000C4
-
- //+
- ///Bar 0x000100
- #define FC_Bar "Bar.fc"
- #define BarObject F_NewObj(FC_Bar
-
- #define FR_Bar 0x000100
- #define FR_Bar_Mthd MTHD_BASE | FR_Bar
- #define FR_Bar_Attr ATTR_BASE | FR_Bar
- #define FR_Bar_Pref PREF_BASE | FR_Bar
-
- #define FA_Bar_Title 0x8F000100
- #define FA_Bar_PreParse 0x8F000101
-
- #define FP_Bar_PreParse 0x50000100
- //+
- ///Gauge 0x000140
- #define FC_Gauge "Gauge.fc"
- #define GaugeObject F_NewObj(FC_Gauge
-
- #define FR_Gauge 0x000140
- #define FR_Gauge_Mthd MTHD_BASE | FR_Gauge
- #define FR_Gauge_Attr ATTR_BASE | FR_Gauge
-
- #define FA_Gauge_Simple 0x8F000140
- #define FA_Gauge_Info 0x8F000141
- //+
- /// Balance 0x000280
- #define FC_Balance "Balance.fc"
- #define BalanceObject F_NewObj(FC_Balance
- #define BalanceID(id) F_NewObj(FC_Balance,[FA_ID,id,TAG_DONE])
-
- #define FR_Balance 0x000280
- #define FR_Balance_Mthd MTHD_BASE | FR_Balance
- #define FR_Balance_Attr ATTR_BASE | FR_Balance
- #define FR_Balance_Pref PREF_BASE | FR_Balance
-
- #define FA_Balance_QuickDraw 0x8F000280
-
- #define FP_Balance_QuickDraw 0x50000280
- //+
-
- /// Group 0x001000
- #define FC_Group "Group.fc"
- #define GroupObject F_NewObj(FC_Group
- #define VGroup F_NewObj(FC_Group,FA_ChainToCycle,FALSE
- #define HGroup F_NewObj(FC_Group,FA_ChainToCycle,FALSE,FA_Horizontal,TRUE
- #define Page F_NewObj(FC_Group,FA_ChainToCycle,TRUE,FA_Group_PageMode,TRUE
-
- #define FR_Group 0x001000
- #define FR_Group_Mthd MTHD_BASE | FR_Group
- #define FR_Group_Attr ATTR_BASE | FR_Group
- #define FR_Group_Pref PREF_BASE | FR_Group
-
- #define FA_Group_HSpacing 0x8F001000
- #define FA_Group_VSpacing 0x8F001001
- #define FA_Group_SameWidth 0x8F001002
- #define FA_Group_SameHeight 0x8F001003
- #define FA_Group_SameSize 0x8F001004
- #define FA_Group_RelSizing 0x8F001005
- #define FA_Group_Rows 0x8F001006
- #define FA_Group_Forward 0x8F001007
- #define FA_Group_PageMode 0x8F001008
- #define FA_Group_PageTitles 0x8F001009
- #define FA_Group_PageFont 0x8F00100A
- #define FA_Group_PageStyle 0x8F00100B
- #define FA_Group_ActivePage 0x8F00100C
-
- #define FP_Group_PageFont 0x50001000
- #define FP_Group_HSpacing 0x50001001
- #define FP_Group_VSpacing 0x50001002
- #define FP_Group_PageStyle 0x50001003
-
- long enum {
- FV_Group_ActivePage_Prev = -4,
- FV_Group_ActivePage_Next,
- FV_Group_ActivePage_Last,
- FV_Group_ActivePage_First
- };
- //+
-
- /*** Other Classes *********************************************************/
-
- /// ImageDisplay 0x900040 / Image
- #define FC_ImageDisplay "ImageDisplay.fc"
- #define ImageDisplayObject F_NewObj(FC_ImageDisplay
-
- #define FR_ImageDisplay 0x900040
- #define FR_ImageDisplay_Mthd MTHD_BASE | FR_ImageDisplay
- #define FR_ImageDisplay_Attr ATTR_BASE | FR_ImageDisplay
- #define FR_ImageDisplay_Pref PREF_BASE | FR_ImageDisplay
-
- #define FM_ImageDisplay_Draw 0xF0900040
- #define FM_ImageDisplay_Setup 0xF0900041
- #define FM_ImageDisplay_Cleanup 0xF0900042
-
- #define FA_ImageDisplay 0x8F900040
-
- struct FS_ImageDisplay_Render {struct FeelinRender *Render; };
- struct FS_ImageDisplay_Draw {struct FeelinRect *Rect; struct FeelinRender *Render; };
-
- long enum {
- FI_None,
- FI_Shine, FI_HalfShine, FI_Fill, FI_HalfShadow, FI_Shadow, FI_HalfDark, FI_Dark, FI_Highlight,
- FI_Shine_HalfShine, FI_HalfShine_Fill, FI_Fill_HalfShadow, FI_HalfShadow_Shadow, FI_Shadow_HalfDark, FI_HalfDark_Dark, FI_Dark_Highlight,
- FI_Shine_Fill, FI_HalfShine_HalfShadow, FI_Fill_Shadow, FI_HalfShadow_HalfDark, FI_Shadow_Dark, FI_HalfDark_Highlight,
- FI_Shine_HalfShadow, FI_HalfShine_Shadow, FI_Fill_HalfDark, FI_HalfShadow_Dark, FI_Shadow_Highlight,
- FI_Shine_Shadow, FI_HalfShine_HalfDark, FI_Fill_Dark, FI_HalfShadow_Highlight,
- FI_Shine_HalfDark, FI_HalfShine_Dark, FI_Fill_Highlight,
- FI_Shine_Dark, FI_HalfShine_Highlight,
- FI_Shine_Highlight
- };
-
- #define FP_Back_Window 0x50900040
- #define FP_Back_Screen 0x50900041
- #define FP_Back_Requester 0x50900042
- #define FP_Back_Group 0x50900043
- #define FP_Back_Button 0x50900044
- #define FP_Back_ButtonAlt 0x50900045
- #define FP_Back_Text 0x50900046
- #define FP_Back_String 0x50900047
- #define FP_Back_StringAlt 0x50900048
- #define FP_Back_List 0x50900049
- #define FP_Back_Prop 0x5090004A
- #define FP_Back_Slider 0x5090004B
- #define FP_Back_Gauge 0x5090004C
- #define FP_Back_Pop 0x5090004D
- #define FP_Back_Page 0x5090004E
-
- #define NoBack FA_Back, FI_None
-
- #define WindowBack FA_Back, FP_Back_Window
- #define ScreenBack FA_Back, FP_Back_Screen
- #define RequesterBack FA_Back, FP_Back_Requester
- #define GroupBack FA_Back, FP_Back_Group
- #define TextBack FA_Back, FP_Back_Text
- #define StringBack FA_Back, FP_Back_String, FA_AltBack,FP_Back_StringAlt
- #define ButtonBack FA_Back, FP_Back_Button, FA_AltBack,FP_Back_ButtonAlt
- #define GaugeBack FA_Back, FP_Back_Gauge
- #define ListBack FA_Back, FP_Back_List
- #define PropBack FA_Back, FP_Back_Prop
- #define SliderBack FA_Back, FP_Back_Slider
- #define PopBack FA_Back, FP_Back_Pop
- //+
- /// TextDisplay 0x900080 / Text
- #define FC_TextDisplay "TextDisplay.fc"
- #define FS_TextDisplay_Size FeelinS_TextDisplay_Size
- #define FS_TextDisplay_Draw FeelinS_ImageDisplay_Draw
- #define TextDisplayObject F_NewObj(FC_TextDisplay
-
- #define FR_TextDisplay 0x900080
- #define FR_TextDisplay_Mthd MTHD_BASE | FR_TextDisplay
- #define FR_TextDisplay_Attr ATTR_BASE | FR_TextDisplay
-
- #define FM_TextDisplay_Size 0xF0900080
- #define FM_TextDisplay_Draw 0xF0900040
-
- #define FA_TextDisplay_Contents 0x8F900080
- #define FA_TextDisplay_PreParse 0x8F900081
- #define FA_TextDisplay_Font 0x8F900082
- #define FA_TextDisplay_Width 0x8F900083
- #define FA_TextDisplay_Height 0x8F900084
- #define FA_TextDisplay_Interline 0x8F900085
- #define FA_TextDisplay_Overflow 0x8F900086
- #define FA_TextDisplay_Align 0x8F900087
- #define FA_TextDisplay_Style 0x8F900088
- #define FA_TextDisplay_APen 0x8F900089
- #define FA_TextDisplay_BPen 0x8F90008A
- #define FA_TextDisplay_UnderShort 0x8F90008B
-
- long enum {
- FV_TextDisplay_Left,
- FV_TextDisplay_Center,
- FV_TextDisplay_Right,
- FV_TextDisplay_Justify
- };
-
- #define FV_TextDisplay_Plain (1L << 00)
- #define FF_TextDisplay_Bold (1L << 01)
- #define FF_TextDisplay_Italic (1L << 02)
- #define FF_TextDisplay_Underlined (1L << 03)
- #define FV_TextDisplay_Simple (1L << 04)
- #define FF_TextDisplay_Shadow (1L << 05)
- #define FF_TextDisplay_Light (1L << 06)
- #define FF_TextDisplay_Emboss (1L << 07)
- #define FF_TextDisplay_Ghost (1L << 08)
-
- struct FeelinS_TextDisplay_Size { struct FeelinRect *Rect; };
-
- struct FeelinTextDisplay {
- UWORD nWidth;
- UWORD nHeight;
- };
- //+
- /// Dataspace 0x9000C0 / Client
- #define FC_Dataspace "Dataspace.fc"
- #define DataspaceObject F_NewObj(FC_Dataspace
-
- #define FR_Dataspace 0x9000C0
- #define FR_Dataspace_Mthd MTHD_BASE | FR_Dataspace
- #define FR_Dataspace_Attr ATTR_BASE | FR_Dataspace
-
- #define FM_Dataspace_Add 0xF09000C0
- #define FM_Dataspace_Remove 0xF09000C1
- #define FM_Dataspace_Find 0xF09000C2
- #define FM_Dataspace_Clear 0xF09000C3
- #define FM_Dataspace_Merge 0xF09000C4
- #define FM_Dataspace_ReadIFF 0xF09000C5
- #define FM_Dataspace_WriteIFF 0xF09000C6
- #define FM_Dataspace_Resolve 0xF09000C7
-
- #define FA_Dataspace_Pool 0x8F9000C0
- //+
- /// DisplayContext 0x900140 / Client
- #define FC_DisplayContext "DisplayContext.fc"
-
- #define FR_DisplayContext 0x900140
- #define FR_DisplayContext_Mthd MTHD_BASE | FR_DisplayContext
- #define FR_DisplayContext_Attr ATTR_BASE | FR_DisplayContext
- #define FR_DisplayContext_Pref PREF_BASE | FR_DisplayContext
-
- struct FeelinDisplayContext {
- LONG *Scheme;
- struct Screen *Screen;
- };
- //+
- /// Display 0x901000 / DisplayServer
- #define FC_Display "Display.fc"
-
- #define FR_Display 0x901000
- #define FR_Display_Mthd MTHD_BASE | FR_Display
- #define FR_Display_Attr ATTR_BASE | FR_Display
- #define FR_Display_Pref PREF_BASE | FR_Display
-
- #define FM_Display_CreatePen 0xF0901000
- #define FM_Display_DeletePen 0xF0901001
- #define FM_Display_CreateScheme 0xF0901002
- #define FM_Display_DeleteScheme 0xF0901003
-
- #define FM_CreatePen FM_Display_CreatePen
- #define FM_DeletePen FM_Display_DeletePen
- #define FM_CreateScheme FM_Display_CreateScheme
- #define FM_DeleteScheme FM_Display_DeleteScheme
-
- #define FA_Display_Name 0x8F901000
- #define FA_Display_Title 0x8F901001
- #define FA_Display_Width 0x8F901002
- #define FA_Display_Height 0x8F901003
- #define FA_Display_Depth 0x8F901004
- #define FA_Display_ScreenMode 0x8F901005
- #define FA_Display_Overscan 0x8F901006
- #define FA_Display_Scheme 0x8F901007
- #define FA_Display_SchemeSpec 0x8F901008
- #define FA_Display_Font 0x8F901009
- #define FA_Display_Background 0x8F90100A
- #define FA_Display_Spec 0x8F90100B
- #define FA_Display_Screen 0x8F90100C
- #define FA_Display_ColorMap 0x8F90100D
- #define FA_Display_Pens 0x8F90100E
-
- #define FP_Display_Name 0x50901000
- /*
- OBJECT feelinDisplaySpec
- publicname[031]:ARRAY OF CHAR, nullbyte1:CHAR
- screenname[255]:ARRAY OF CHAR, nullbyte2:CHAR
- fontname[79]:ARRAY OF CHAR, nullbyte3:CHAR
- background[255]:ARRAY OF CHAR, nullbyte4:CHAR
- flags
- screenmode
- overscan
- width:INT
- height:INT
- depth:INT
- version:INT -> struct version for future expansion
-
- pens:feelinSchemeSpec
- ENDOBJECT
- */
- //+
- /// Pen 0x901040 / DisplayServer / Display
- #define FR_Pen 0x901040
- #define FR_Pen_Attr ATTR_BASE | FR_Pen
- #define FR_Pen_Mthd MTHD_BASE | FR_Pen
- #define FR_Pen_Pref PREF_BASE | FR_Pen
-
- #define FA_Pen_Text 0x8F901040
- #define FA_Pen_Shine 0x8F901041
- #define FA_Pen_HalfShine 0x8F901042
- #define FA_Pen_Fill 0x8F901043
- #define FA_Pen_HalfShadow 0x8F901044
- #define FA_Pen_Shadow 0x8F901045
- #define FA_Pen_HalfDark 0x8F901046
- #define FA_Pen_Dark 0x8F901047
- #define FA_Pen_Highlight 0x8F901048
- #define FA_SchemeSpec 0x8F901049
-
- long enum {
- FV_Pen_Text, // 0
- FV_Pen_Shine, // 1
- FV_Pen_HalfShine, // 2
- FV_Pen_Fill, // 3
- FV_Pen_HalfShadow, // 4
- FV_Pen_Shadow, // 5
- FV_Pen_HalfDark, // 6
- FV_Pen_Dark, // 7
- FV_Pen_Highlight, // 8
- FV_Pen_Max
- };
-
- #define FP_Pen_Shine 0x50901040
- #define FP_Pen_Fill 0x50901041
- #define FP_Pen_Shadow 0x50901042
- #define FP_Pen_Dark 0x50901043
- #define FP_Pen_Text 0x50901044
- #define FP_Pen_Highlight 0x50901045
-
- struct FeelinPenSpec
- {
- UBYTE blackbox[12];
- };
-
- struct FeelinSchemeSpec
- {
- UBYTE Shine[12];
- UBYTE Fill[12];
- UBYTE Dark[12];
- UBYTE Text[12];
- UBYTE Highlight[12];
- UBYTE Shadow[12];
- };
- //+
-
- #endif
-